//
//  TableViewController.m
//  Archiver
//
//  Created by LiJonius on 16/3/24.
//  Copyright © 2016年 LiJonius. All rights reserved.
//

#import "TableViewController.h"

@interface TableViewController ()
@property (nonatomic, strong)NSMutableArray *filePaths;
@end

@implementation TableViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
       
    self.filePaths = [NSMutableArray array];

    //第一次的时候加载Users下面的文件 （判断如果是第一次加载（路径是空的） 路径）设置为、user   ;如果不是 则设置为  返回来的路径self.direcotryPath
    if (!self.direcotryPath) {
       // self.direcotryPath = @"/Users";
        self.direcotryPath = NSHomeDirectory();
        //NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[0];
    }
    //设置VIew的title :显示路径 的最后一部分文字self.direcotryPath：上个界面传过来的
    self.title = [self.direcotryPath lastPathComponent];
    //创建文件管理对象
    NSFileManager *fm = [NSFileManager defaultManager];
    //获取路径下的文件
    NSArray *fileNames = [fm contentsOfDirectoryAtPath:self.direcotryPath error:nil];
    //hasPrefix 文件名字的 头
    for (NSString *fileName in fileNames) {
        if ([fileName hasPrefix:@"."]) {
            continue;//筛选：跳过文件以.开头的文件 （不现实在tableView 中）
        }
        //拼接完整路径
        NSString *filePath = [self.direcotryPath stringByAppendingPathComponent:fileName];
        //将完整路径存放到数组中
        [self.filePaths addObject:filePath];
    }
    
    
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Table view data source


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
 
    return self.filePaths.count;
}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString * identifier = @"Cell";
    //UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier forIndexPath:indexPath];//SB\XIB  用此方法
    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (cell == nil) {
        
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
    }
    
    NSString *filePath = self.filePaths[indexPath.row];
    //路径后部分 ：textLabel.text 显示路径的后部分
    cell.textLabel.text = [filePath lastPathComponent];
    NSFileManager *fm = [NSFileManager defaultManager];
    BOOL isDir;
    //如果是文件夹
    if ([fm fileExistsAtPath:filePath isDirectory:&isDir]&&isDir) {//如果是文件夹：则图片用directory.png显示
        cell.imageView.image = [UIImage imageNamed:@"directory.png"];
        
    }
    else if ([filePath hasSuffix:@"jpg"]||[filePath hasSuffix:@"png"]||[filePath hasSuffix:@"PNG"]||[filePath hasSuffix:@"JPG"]){
        //如果是图片 ：则直接把图片显示在cell中:(设置显示图片的两种方法)
        //[UIImage imageNamed:@"<#string#>"],[UIImage imageWithContentsOfFile:<#(NSString *)#>]
        cell.imageView.image = [UIImage imageWithContentsOfFile:filePath];
    }else if ([filePath hasSuffix:@"rtf"]||[filePath hasSuffix:@"txt"]||[filePath hasSuffix:@"h"]||[filePath hasSuffix:@"m"]){
        //如果后缀时rtf txt h ，cell的image 则显示为txt.png
        cell.imageView.image = [UIImage imageNamed:@"txt.png"];
    }else{
            cell.imageView.image = [UIImage imageNamed:@"file.png"];
    }
    
    
    
    return cell;
}
//点击cell触发的方法
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
    NSString *filePath = self.filePaths[indexPath.row];
    NSFileManager *fm = [NSFileManager defaultManager];
    BOOL isDir;
    if ([fm fileExistsAtPath:filePath isDirectory:&isDir]&&isDir) {//判断是否是文件夹 如果是，TRTableViewController则创建一个 VC （复用同一个VC）（storyboard的ID创建视图）
        //TableViewController *vc = [self.storyboard instantiateViewControllerWithIdentifier:@"filelistvc"];
        //将路径 赋值给自己的 direcotryPath属性
        TableViewController* vc = [[TableViewController alloc]init];
        vc.direcotryPath = filePath;
        [self.navigationController pushViewController:vc animated:YES];
    }else if ([filePath hasSuffix:@"jpg"]||[filePath hasSuffix:@"png"]||[filePath hasSuffix:@"PNG"]||[filePath hasSuffix:@"JPG"]){
        //如果是图片文件
        UIViewController *vc = [[UIViewController alloc]init];
        //创建图片视图 大小与控制器大小相同（imageWithContentsOfFile）
        UIImageView *iv = [[UIImageView alloc]initWithFrame:vc.view.bounds];
        iv.image = [UIImage imageWithContentsOfFile:filePath];
        [vc.view addSubview:iv];
        
        [self.navigationController pushViewController:vc animated:YES];
       
    }else if ([filePath hasSuffix:@"rtf"]||[filePath hasSuffix:@"txt"]||[filePath hasSuffix:@"h"]||[filePath hasSuffix:@"m"]){
        //如果是文本 最好用web View  ,可以加载多种文件
        UIViewController *vc = [[UIViewController alloc]init];
        //创建TEXTVIEW  大小与控制器大小相同（imageWithContentsOfFile）
        UITextView *tv = [[UITextView alloc]initWithFrame:vc.view.bounds];
        //设置textView 现实内容 和显示格式
        tv.text = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
        
        [vc.view addSubview:tv];
        
        [self.navigationController pushViewController:vc animated:YES];
    }else{
        UIAlertView *alertView = [[UIAlertView alloc]initWithTitle:@"提示" message:@"非常抱歉，目前版本不支持查看该类型的文件，请期待下一版本。。。" delegate:self cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];
        [alertView show];
    }
}
@end
